home *** CD-ROM | disk | FTP | other *** search
- package java.beans;
-
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.Serializable;
- import java.util.Vector;
-
- public class PropertyChangeSupport implements Serializable {
- private transient Vector listeners;
- private Object source;
- private int propertyChangeSupportSerializedDataVersion = 1;
-
- public PropertyChangeSupport(Object sourceBean) {
- this.source = sourceBean;
- }
-
- public synchronized void addPropertyChangeListener(PropertyChangeListener listener) {
- if (this.listeners == null) {
- this.listeners = new Vector();
- }
-
- this.listeners.addElement(listener);
- }
-
- public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
- if (oldValue == null || !oldValue.equals(newValue)) {
- Vector targets;
- synchronized(this) {
- if (this.listeners == null) {
- return;
- }
-
- targets = (Vector)this.listeners.clone();
- }
-
- PropertyChangeEvent evt = new PropertyChangeEvent(this.source, propertyName, oldValue, newValue);
-
- for(int i = 0; i < targets.size(); ++i) {
- PropertyChangeListener target = (PropertyChangeListener)targets.elementAt(i);
- target.propertyChange(evt);
- }
-
- }
- }
-
- private void readObject(ObjectInputStream s) throws ClassNotFoundException, IOException {
- s.defaultReadObject();
-
- Object listenerOrNull;
- while((listenerOrNull = s.readObject()) != null) {
- this.addPropertyChangeListener((PropertyChangeListener)listenerOrNull);
- }
-
- }
-
- public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
- if (this.listeners != null) {
- this.listeners.removeElement(listener);
- }
- }
-
- private void writeObject(ObjectOutputStream s) throws IOException {
- s.defaultWriteObject();
- Vector v = null;
- synchronized(this){}
-
- try {
- if (this.listeners != null) {
- v = (Vector)this.listeners.clone();
- }
- } catch (Throwable var6) {
- throw var6;
- }
-
- if (v != null) {
- for(int i = 0; i < v.size(); ++i) {
- PropertyChangeListener l = (PropertyChangeListener)v.elementAt(i);
- if (l instanceof Serializable) {
- s.writeObject(l);
- }
- }
- }
-
- s.writeObject((Object)null);
- }
- }
-